## todo:写函数,将传入的列表或元祖对象的奇数位索引对应的元素,
# def function(list1):
#     for i in range(len(list1)):
#         if i % 2 == 1:
#             print(list1[i])
#
#
# list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# function(list1)

## todo:写函数,判断用户传入的对象(string,list,tuple)长度是否大于5
# def func(string, list, tuple):
#     list1 = [string, list, tuple]
#     for i in list1:
#         if len(i) >= 5:
#             print(f"{i}的长度大于等于5")
#         else:
#             print(f"{i}的长度小于5")
#
#
# str1 = "abcdefg"
# list2 = [1, 2, 3, 4]
# tuple1 = (1, 2, 3, 4, 5)
#
# func(str1,list2,tuple1)

## todo:写函数,计算传入的string中,数字,字母,空格以及其它内容的个数,并返回结果
# def func(string):
#     n = 0
#     r = 0
#     x = 0
#     for i in string:
#         if 'a' <= i <= 'z' or 'A' <= i <= 'Z':
#             n += 1
#         elif i in '0123456789':
#             r += 1
#         else:
#             x += 1
#     print(f"字母：{n},数字：{r},符号：{x}")
#
# func('abcd1234???')

## todo:写函数,接收两个数字参数,返回较大的那个数字
# def func(a, b):
#     if a < b:
#         print(b)
#     else:
#         print(a)
#
#
# func(17, 13)

## todo:编写一个函数cacluate, 可以接收任意多个数,返回的是一个元组.元组的第一个值为所有参数的平均值, 第二个值是大于平均值的所有数.


## todo:不用内置函数
# def cacluate(*a):
#     a = list(a)
#     sum = 0
#     avg = 0
#     max = 0
#     for i in range(len(a)):
#         sum += a[i]
#         avg = sum / len(a)
#     a.insert(0, avg)
#     for j in range(len(a)):
#         if a[j] > max:
#             max = a[j]
#     a.remove(max)
#     a.insert(1, max)
#     print(a)
#
#
# cacluate(1, 5, 7, 6, 8, 7)

## todo:用内置函数
# def calculate(*a):
#     a = list(a)
#     total = sum(a)
#     avg = total / len(a)
#
#     a.insert(0, avg)
#
#     maximum = max(a)
#     a.remove(maximum)
#     a.insert(1, maximum)
#
#     print(a)
#
# calculate(1, 5, 7, 6, 8, 7)

## todo:编写一个函数, 接收字符串参数, 返回一个元组,元组的第一个值为大写字母的个数, 第二个值为小写字母个数.
# def func(string):
#     d = 0
#     x = 0
#     for i in string:
#         if 'a' <= i <= 'z':
#             x += 1
#         elif 'A' <= i <= 'Z':
#             d += 1
#     return d,x
#
# print(func('abcABCD'))

"""
编写函数, 接收一个列表(包含30个1~100之间的随机整形数)
和一个整形数k, 返回一个新列表.
函数需求:
将列表下标k之前对应(不包含k)的元素逆序;
将下标k及之后的元素逆序;
"""

# def func(list1, k):
#     list2 = []
#     list3 = []
#     for i in range(len(list1)):
#         if i < k:
#             list2.append(list1[i])
#         else:
#             list3.append(list1[i])
#     list2 = list2[::-1]
#     list3 = list3[::-1]
#     list2.extend(list3)
#     return list2
#
#
# list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
# k = 15
# print(func(list1, k))

## todo:编写函数，从键盘输入参数x和n，计算并显示形如x+xx +xxx + xxxx + xxxxx+xxx…xxx+ 的表达式前n项的值

# def func(x, n):
#     num = x
#     result = 0
#     for i in range(n):
#         result += num
#         num = num * 10 + x
#         print(f"{num} +",end='')
#
#
# func(4, 5)

"""
写函数,函数接收的4个参数分别是:姓名,性别(默认为男),年龄,地址

用户通过input输入这4个内容(支持持续输入,Q或q退出),并传递给函数

函数接收到这些内容,将其追加到student_msg文件中

重点:复习文件操作
"""

#
# import os
#
#
# def func(name, age, adress, sex='男'):
#     with open('./student.txt', "w", encoding='utf-8') as f:
#         f.write(name)
#         f.write(age)
#         f.write(adress)
#         f.write(sex)
#
#
# def main():
#     print('输入Q退出')
#     print('输入R填写')
#     return input('请输入')
#
#
# while True:
#     option = main()
#     if option == 'R':
#         name = input('请输入姓名')
#         age = input('请输入年龄')
#         adress = input('请输入地址')
#         func(name,age,adress)
#         continue
#     if option == 'Q':
#         print('退出')
#         break


## 写函数,接收n个数字,返回这些数字的和(动态传参)
# def func(*n):
#     return sum(n)
#
#
# print(func(1, 2, 3))

## 在实参中传入多个可迭代对象(要有string,list,tuple,set,dict),将每个对象的每个元素都加到args或kwargs里

# def func(*args, **kwargs):
#     print(args)
#     print(kwargs)
#
#
# func(1, 2, 'abc', [1, 2, 3], (1, 2, 3), a=2, b=3)

## 写函数,把传过来的列表中的每一个元素都用"_"拼接,并返回
# def func(list1):
#     for i in range(len(list1)):
#         list1[i] = str(list1[i]) + '_'
#     return list1
#
#
# list1 = [1, 2, 3, 4, 5, 6, 7]
# print(func(list1))

## 写函数,传入一个数字,返回这个数的阶乘重点:累乘 1x2x3....

# def func(n):
#     result = 1
#     for i in range(1, n + 1):
#         result *= i
#     return result
#
#
# print(func(5))

## 写函数,返回一个扑克牌列表,里面有52项,每一项都是一个tuple
# def func():
#     str = '2 3 4 5 6 7 8 9 10 J Q K A 大王 小王'
#     str = str.split(' ')
#     str_color = ['黑桃', '红桃', '梅花', '方片']
#
#     list1 = []
#     card = tuple()
#     for i in str:
#         if i not in ['大王', '小王']:
#             for j in str_color:
#                 card = (i, j)
#                 list1.append(card)
#         else:
#             list1.append(i)
#     for i in list1:
#         if list1.count(i) > 1:
#             list1.remove(i)
#
#     print(list1)
#     print(len(list1))
#
#
# func()


## 用代码写一个99乘法表

# def func():
#     for i in range(1,10):
#         for j in range(1,i+1):
#             print(f"{j}*{i}={i * j}", end='\t')
#         print()
#
# func()

## 编写函数，求1+2+3+…N的和
# def func(N):
#     sum = 0
#     for i in range(1,N+1):
#         sum +=i
#     print(sum)
#
# func(4)

## 编写一个函数，求多个数中的最大值
# def func(*a):
#     a = list(a)
#     print(a)
#     max = 0
#     for i in a:
#         if i > max:
#             max = i
#     print(max)
#
#
# func(1, 2, 3, 4, 5, 5, 64, 564, 654, 654, 65)

## 编写一个函数，提取指定字符串中所有的字母，然后拼接在一起产生一个新的字符串
# def func(str):
#     str1 = ''
#     for i in str:
#         if 'a' <= i <= 'z' or 'A' <= i <= 'Z':
#             str1 += i
#     print(str1)
#
#
#
#
# func('abc123efg')

## 定义一个学生注册函数enroll()，打印学生姓名，性别，年龄，城市， 使用默认参数降低调用函数的复杂度
# def enroll(name='小天才', gender='男', age=25, city='北京'):
#     print("学生姓名：", name)
#     print("学生性别：", gender)
#     print("学生年龄：", age)
#     print("学生城市：", city)
#
#
# enroll()

## 编写一个函数，接受一个字符串作为参数，并返回其中所有单词的首字母的大写形式
# def func(string):
#     ord1 = ord(string[0]) + 32
#     print(ord1)
#
#
#
# func('abc')


## 写一个函数，求多个数的平均值
# def func(*n):
#     sum1 = sum(n)
#     avg = sum1 / len(n)
#     print(avg)
# func(1,2,3,4)

## 写一个自己的len函数，统计指定序列中元素的个数
# def func(*a):
#     n = 0
#     for i in range(len(a)):
#         n += 1
#     return n
#
#
# print(func(1, 2, 3, 4, 5, 6))

## 找出传入的列表或元组的奇数位对应的元素，并返回一个新的列表
# def func(list1):
#     for i in range(len(list1)):
#         if i % 2 == 1:
#             print(list1[i])
#
#
#
# list1 = [1, 2, 3, 4, 5, 6, 7]
# func(list1)

## 编写一个函数，接受一个字符串列表作为参数，并返回一个字符串，其中包含所有字符串首字母的大写形式
def func(string):
    for i in 字符:
        ord1 = ord(i[0]) - 32
        char = chr(ord1)
        print(char)


func(['acf', 'das'])

"""
定义函数，有一个形参，传入的是列表，数组大小不超过 100个，
# 数组中的每个元素值不允许超过 100，但是可以等于100，
# 如果列表大小超过了100个截取到第100个为止，要求返回的列表格式：
"""

# def func(list1):
#     list1 = list1[:100]
#     for i in list1:
#         if i >100:
#             list1.remove(i)
#     print(list1)
#
# list1 = [100,101]
# func(list1)

## 删除所有重复元素，使得每个元素只出现一次 按照数字的大小，由高到低排序返回
# def func(list1):
#     unique_list = list(set(list1))
#
#     sorted_list = sorted(unique_list, reverse=True)
#
#     return sorted_list
#
#
# list1 = [3, 2, 5, 2, 8, 5, 1, 4, 6, 3]
# result_list = func(list1)
# print(result_list)

## 定义函数 getLength，打印用户传入的容器类型和数据长度
# def getLength(data):
#     data_type = type(data)
#     data_length = len(data)
#
#     print("容器类型:", data_type)
#     print("数据长度:", data_length)
#
#
# # 示例用法
# my_list = [1, 2, 3, 4, 5]
# getLength(my_list)
#
# my_dict = {'a': 1, 'b': 2, 'c': 3}
# getLength(my_dict)
#
# my_set = {1, 2, 3, 4, 5}
# getLength(my_set)

## 定义函数 generateNum( ) 返回从0~9的十个数字中随机取出4个不重复的数字组成一个字符串
# def generateNum(*a):
#     a = set(a)
#     a = list(a)
#     str1 = ''
#     for i in range(len(a)):
#         if i < 4:
#             str1 += str(a[i])
#     print(str1)
#
#
# generateNum(1, 2, 2, 3, 4, 5, 8, 9, 7)

## 定义函数 moreThan(num)，判断输入的数字是否大于1500
# def moreThan(num):
#     if num > 1500:
#         print("yes")
#     else:
#         print('no')
#
#
# moreThan(1600)

## 定义函数，有两个形参，第一个形参到第二个形参的范围，所有平方数之和
# def func(x, y):
#     sum1 = 0
#     num = 0
#     for i in range(x, y + 1):
#         num = i * i
#         sum1 += num
#     print(sum1)
#
#
# func(5, 10)

## 写函数，检查传入字典的每一个value长度，如果大于2，那么仅保留前两个长度的内容， 并将新内容返回给调用者
# def func(dict1):
#     new_dict = {}
#     for key, value in dict1.items():
#         if len(value) > 2:
#             new_dict[key] = value[:2]
#         else:
#             new_dict[key] = value
#     return new_dict
#
#
# # 示例用法
# dict1 = {'key1': '12', 'key2': '123', 'key3': '1', 'key4': '1234'}
# new_dict = func(dict1)
# print(new_dict)

## 写函数，判断用户传入的对象（字符串、列表、元组）的元素是否为空
# def func(x):
#     if isinstance(x,(list,tuple,str)):
#         if len(x):
#             print('不是空')
#         else:
#             print('空的')
#
#
# func('')

## 编写自定义函数，完成一个简单的减法运算函数
# def func(a,b):
#     return  a-b
#
#
# print(func(5, 6))

## 编写自定义函数，可以输出自己的名字即可。
# def func():
#     print('冯定宇')
#
#
# func()

"""
编写自定义函数：剪刀石头布
游戏开始，初始状态下用户和电脑都有 100 分，赢一局+10 分，输一局-10 分。
"""

# import random
#
#
# def func():
#     user = 100
#     admin = 100
#
#     while True:
#         print("请选择：")
#         print("1.剪刀")
#         print("2.石头")
#         print("3.布")
#         print("0.退出游戏")
#
#         user_choice = input("请输入选项（输入对应数字）：")
#
#         if user_choice == '0':
#             print("游戏结束！")
#             break
#
#         computer_choice = random.randint(1, 3)
#
#         result = None
#
#         if user_choice == '1':
#             if computer_choice == 1:
#                 result = "平局"
#             elif computer_choice == 2:
#                 result = "你输了"
#                 user -= 10
#                 admin += 10
#             else:
#                 result = "你赢了"
#                 user += 10
#                 admin -= 10
#
#         elif user_choice == '2':
#             if computer_choice == 1:
#                 result = "你赢了"
#                 user += 10
#                 admin -= 10
#             elif computer_choice == 2:
#                 result = "平局"
#             else:
#                 result = "你输了"
#                 user -= 10
#                 admin += 10
#
#         elif user_choice == '3':
#             if computer_choice == 1:
#                 result = "你输了"
#                 user -= 10
#                 admin += 10
#             elif computer_choice == 2:
#                 result = "你赢了"
#                 user += 10
#                 admin -= 10
#             else:
#                 result = "平局"
#
#         else:
#             print("无效选项，请重新输入！")
#             continue
#
#         print(f"你选择了：{user_choice}")
#         print(f"电脑选择了：{computer_choice}")
#         print(f"比赛结果：{result}")
#         print(f"你的分数：{user}")
#         print(f"电脑的分数：{admin}")
#         print()
#
# func()

## 编写一个函数，接受一个字符串作为参数，并返回该字符串的逆序字符串
# def func(string):
#     print(string[::-1])
#
#
# func('abc')


## 编写一个函数，接受一个数字列表作为参数，并返回其中所有偶数的列表
# def func(n):
#     list1 = []
#     for i in n:
#         if i % 2 == 0:
#             list1.append(i)
#     return list1
#
#
# print(func([1, 2, 3, 4, 5, 6, 7, 8, 9]))

## 编写一个函数，接受一个字符串列表作为参数，并返回其中最长的字符串。
# def func(str_list):
#     long = ''
#     for i in range(len(str_list)):
#         if len(str_list[i]) > len(long):
#             long = str_list[i]
#     print(long)
#
#
# func(['acg', 'dadsa', 'dadsac', 'dasdsadsadsadsadsa', 'dsadasdsa'])


## 编写一个函数，接受一个数字列表作为参数，并返回其中所有数字的平方的总和
# def func(n):
#     sum1 = 0
#     num = 0
#     for i in n:
#         num = i * i
#         sum1 += num
#     print(sum1)
#
# func([1, 2, 3, 4])

## 编写一个函数，接受一个整数作为参数，并返回其阶乘
# def func(n):
#     result = 1
#     for i in range(1, n + 1):
#         result *= i
#     return result
#
#
# print(func(5))
